package com.newtouch.bxzs.common.base.model;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 产品实体类
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2020/12/31 15:13</td>
 * <td>xiongdianqiang</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author xiongdianqiang
 * @version 1.0.0
 * @since 1.0.0
 */
@Data
@TableName(value = "ASSISTANT_PRODUCT")
public class Product implements Serializable {

    /**
     * 序列化
     */
    private static final long serialVersionUID = -3761573275732987968L;

    /**
     * 主键
     */
    @TableId(value = "PRODUCT_ID", type = IdType.ASSIGN_UUID)
    private String productId;

    /**
     * 创建人id
     */
    @TableField(value = "CREATE_USER_ID")
    private String createUserId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "CREATE_TIME")
    private Date createTime;

    /**
     * 修改人id
     */
    @TableField(value = "UPDATE_USER_ID")
    private String updateUserId;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "UPDATE_TIME")
    private Date updateTime;

    /**
     * 备注
     */
    @TableField(value = "MEMO")
    private String memo;

    /**
     * 产品编号
     */
    @TableField(value = "PRODUCT_CODE")
    private String productCode;

    /**
     * 产品名称
     */
    @TableField(value = "PRODUCT_NAME")
    private String productName;

    /**
     * 产品简称
     */
    @TableField(value = "PRODUCT_ABBREVIATION")
    private String productAbbreviation;

    /**
     * 产品分类
     */
    @TableField(value = "PRODUCT_TYPE")
    private Integer productType;

    /**
     * 保障期限
     */
    @TableField(value = "PRODUCT_GUARANTEE_PERIOD")
    private String productGuaranteePeriod;

    /**
     * 起售时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "PRODUCT_SALE_START_TIME")
    private Date productSaleStartTime;

    /**
     * 停售时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "PRODUCT_SALE_END_TIME")
    private Date productSaleEndTime;

    /**
     * 发布时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "PUBLISH_TIME", updateStrategy = FieldStrategy.IGNORED)
    private Date publishTime;

    /**
     * 撤销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "REVOKE_TIME", updateStrategy = FieldStrategy.IGNORED)
    private Date revokeTime;

    /**
     * 发布状态
     */
    @TableField(value = "PUBLISH_STATUS")
    private String publishStatus;

    /**
     * 产品销售渠道
     */
    @TableField(value = "PRODUCT_SALE_CHANNEL")
    private String productSaleChannel;

    /**
     * 产品起保金额
     */
    @TableField(value = "PRODUCT_INITIAL_INSURED_AMOUNT")
    private BigDecimal productInitialInsuredAmount;

    /**
     * 投保年龄
     */
    @TableField(value = "PRODUCT_INSURE_AGE")
    private String productInsureAge;

    /**
     * 缴费方式
     */
    @TableField(value = "PRODUCT_PAYMENT_METHOD")
    private String productPaymentMethod;

    /**
     * 产品简介
     */
    @TableField(value = "PRODUCT_INTRODUCTION")
    private String productIntroduction;

    /**
     * 主推标识
     */
    @TableField(value = "IS_MAIN_PRODUCT")
    private Boolean mainProduct;

    /**
     * 产品标签
     */
    @TableField(value = "PRODUCT_LABEL")
    private String productLabel;

    /**
     * 产品话术
     */
    @TableField(value = "PRODUCT_SPEECHCRAFT")
    private String productSpeechCraft;

    /**
     * 产品分享标题
     */
    @TableField(value = "PRODUCT_SHARE_TITLE")
    private String productShareTitle;

    /**
     * 产品分享简介
     */
    @TableField(value = "PRODUCT_SHARE_INTRODUCTION")
    private String productShareIntroduction;

    /**
     * 删除状态（0：false，1：true）
     */
    @TableField(value = "IS_DELETE")
    private Boolean deleteFlag = false;

    /**
     * 产品销量
     */
    @TableField(value = "PRODUCT_SALE_NUMBER")
    private String productSaleNumber;

    /**
     * 数据来源
     */
    @TableField(value = "DATA_SOURCE")
    private String dataSource;

    /**
     * 产品名称全拼
     */
    @TableField(value = "PRODUCT_NAME_FULL_SPELLING")
    private String productNameFullSpelling;

    /**
     * 产品状态：1-在售；2-停售
     */
    @TableField(value = "PRODUCT_STATUS")
    private String productStatus;

    /**
     * 产品链接
     */
    @TableField(value = "PRODUCT_URL")
    private String productUrl;

}
